<?php

include_once 'ConstrucDao.php';
include_once 'EtapaDao.php';
include_once '../commons/Conexion.php';
include_once '../model/Constructora.php';
include_once '../model/Obra.php';

/**
 * Description of ObraDao
 *
 * @author User
 */
class ObraDao {

    private $tObra = 't002_obra';

    function __construct() {
        
    }

    /* @var $oObra Obra 
     * @result $oObra Obra
     */

    public function saveObra($oObra = null) {

        $oObra->setId(0);
        try {
            $query = 'insert into %s (nb_nombre,tx_direccion,fe_inicio,fe_fin,fk_constructora) 
                values ("%s","%s","%s","%s",%d);';

            $query = sprintf($query, $this->tObra, $oObra->getNombre(), $oObra->getDireccion(), $oObra->getFechaInicio(), $oObra->getFechaFin(), $oObra->getConstructora()->getId());

            $conn = new Conexion();
            $conn->open();
            $conn->query($query);

            $query = 'select l.co_id from %s l where l.nb_nombre = "%s" and fk_constructora=%d;';

            $query = sprintf($query, $this->tObra, $oObra->getNombre(), $oObra->getConstructora()->getId());

            $result = $conn->query($query);

            while ($fila = @mysql_fetch_array($result, MYSQL_ASSOC)) {
                $oObra->setId($fila['co_id']);
            }

            $conn->close();
        } catch (Exception $e) {
            
        }

        return $oObra;
    }

    /*
     * @var $lId long
     * @result $oObra Obra
     */

    public function getObraById($lId = 0) {

        $oObra = null;

        try {
            $query = 'select l.* from %s l where l.co_id = %d;';
            $query = sprintf($query, $this->tObra, $lId);

            $conn = new Conexion();
            $conn->open();

            $result = $conn->query($query);

            if (isset($result)) {
                $dao = new EtapaDao();
                $oDao = new ConstrucDao();
                while ($fila = @mysql_fetch_array($result, MYSQL_ASSOC)) {
                    $oObra = new Obra();
                    $oObra->setId($fila['co_id']);
                    $oObra->setNombre($fila['nb_nombre']);
                    $oObra->setDireccion($fila['tx_direccion']);
                    $oObra->setFechaInicio($fila['fe_inicio']);
                    $oObra->setFechaFin($fila['fe_fin']);
                    $oObra->setConstructora($oDao->getConstrucById($fila['fk_constructora']));
                    $oObra->setEtapas($dao->getEtapasByObra($fila['co_id']));
                }
            }

            $conn->close();
        } catch (Exception $e) {
            
        }
        return $oObra;
    }

    /*
     * @var $sName string
     * @result $oObra Obra
     */

    public function getObraByName($sName = "", $idConstruc = 0) {

        $oObra = null;

        try {

            $query = 'select l.* from %s l where l.nb_nombre = "%s" and l.fk_constructora=%d;';
            $query = sprintf($query, $this->tObra, $sName, $idConstruc);

            $conn = new Conexion();
            $conn->open();

            $result = $conn->query($query);

            if (isset($result)) {
                $dao = new ConstrucDao();
                while ($fila = @mysql_fetch_array($result, MYSQL_ASSOC)) {
                    $oObra = new Obra();
                    $oObra->setId($fila['co_id']);
                    $oObra->setNombre($fila['nb_nombre']);
                    $oObra->setDireccion($fila['tx_direccion']);
                    $oObra->setFechaInicio($fila['fe_inicio']);
                    $oObra->setFechaFin($fila['fe_fin']);
                    $oObra->setConstructora($dao->getConstrucById($fila['fk_constructora']));
                }
            }

            $conn->close();
        } catch (Exception $e) {
            
        }
        return $oObra;
    }
    
    /*
     * 
     * @return $listObra List<Obra>
     */

    public function getConstructoras() {

        $listObra = null;

        try {
            $query = 'select l.* from %s l order by l.co_id';
            $query = sprintf($query, $this->tObra);

            $conn = new Conexion();
            $conn->open();

            $result = $conn->query($query);

            $listObra = array();
            $i = 0;            
            while ($fila = @mysql_fetch_array($result, MYSQL_ASSOC)) {
                $oObra = new Obra();
                $oObra->setId($fila['co_id']);
                $oObra->setNombre($fila['nb_nombre']);
                $oObra->setDireccion($fila['tx_direccion']);
                $oObra->setFechaInicio($fila['fe_inicio']);
                $oObra->setFechaFin($fila['fe_fin']);                
                $listObra[$i++] = $oObra;
            }
            $conn->close();
        } catch (Exception $e) {
            
        }

        return $listObra;
    }
    
        /*
     * @var $lId long
     * @return $listObra List<Obra>
     */

    public function getObrasByConstruc($lId = 0) {

        $listObra = null;

        try {
            $query = 'select l.* from %s l where l.fk_constructora = %d order by l.co_id';
            $query = sprintf($query, $this->tObra, $lId);

            $conn = new Conexion();
            $conn->open();

            $result = $conn->query($query);

            $listObra = array();
            $i = 0;
            while ($fila = @mysql_fetch_array($result, MYSQL_ASSOC)) {
                $oObra = new Obra();
                $oObra->setId($fila['co_id']);
                $oObra->setNombre($fila['nb_nombre']);
                $oObra->setDireccion($fila['tx_direccion']);
                $oObra->setFechaInicio($fila['fe_inicio']);
                $oObra->setFechaFin($fila['fe_fin']);                
                $listObra[$i++] = $oObra;
            }
            $conn->close();
        } catch (Exception $e) {
            
        }

        return $listObra;
    }

    /*
     * @var $oObra Obra
     * @result $oObra Obra
     */

    public function updateObra($oObra) {

        try {
            $query = 'update %s l set l.nb_nombre = "%s", l.tx_direccion = "%s", l.fe_inicio = "%s", l.fe_fin = "%s", fk_constructora = %d where  l.co_id = %d;';
            $query = sprintf($query, $this->tObra, $oObra->getNombre(), 
                    $oObra->getDireccion(), $oObra->getFechaInicio(), $oObra->getFechaFin(), 
                    $oObra->getConstructora()->getId(), $oObra->getId());

            $conn = new Conexion();
            $conn->open();
            $conn->query($query);
            $conn->close();
        } catch (Exception $e) {
            $oObra = null;
        }

        return $oObra;
    }

    /* 
     * @var $oObra Obra 
     * @return $result boolean
     */

    public function deleteObra($oObra) {

        $result = false;
        try {
            $query = 'delete from %s where co_id = %d';
            $query = sprintf($query, $this->tObra, $oObra->getId());

            $conn = new Conexion();
            $conn->open();
            $conn->query($query);
            $conn->close();

            $result = true;
        } catch (Exception $e) {
            
        }

        return $result;
    }

}

?>
